package com.wmuj.controller;

import com.wmuj.annotation.LogOperation;
import com.wmuj.pojo.Emp;
import com.wmuj.pojo.EmpQueryParam;
import com.wmuj.pojo.PageResult;
import com.wmuj.pojo.Result;
import com.wmuj.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

/** 员工管理 */
@RequestMapping("/emps")
@RestController
@Slf4j
public class EmpController {

  @Autowired private EmpService empService;

  //  /**
  //   * 分页查询
  //   *
  //   * @return
  //   */
  //  @GetMapping
  //  public Result page(
  //      @RequestParam(defaultValue = "1") Integer page,
  //      @RequestParam(defaultValue = "10") Integer pageSize,
  //      String name,
  //      Integer gender,
  //      @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
  //      @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
  //
  //    log.info(
  //        "分页查询，参数：page={},pageSize={},name={},gender={},begin={},end={}",
  //        page,
  //        pageSize,
  //        name,
  //        gender,
  //        begin,
  //        end);
  //    PageResult<Emp> pageResult = empService.page(page, pageSize, name, gender, begin, end);
  //    return Result.success(pageResult);
  //  }
  /**
   * 分页查询
   *
   * @return
   */
  @GetMapping
  public Result page(EmpQueryParam empQueryParam) {

    log.info("分页查询，参数：{}", empQueryParam);
    PageResult<Emp> pageResult = empService.page(empQueryParam);
    return Result.success(pageResult);
  }

  /** 查询全部的员工信息列表 */
  @GetMapping("/list")
  public Result list() {
    List<Emp> list = empService.findAllList();
    return Result.success(list);
  }

  /** 新增员工信息 */
  @LogOperation

  @PostMapping
  public Result addInfo(@RequestBody Emp emp) {
    log.info("新增员工信息：{}", emp);
    empService.addInfo(emp);
    return Result.success();
  }

  /** 删除员工信息 可以是多个id删除 */
  @LogOperation

  @DeleteMapping
  public Result delete(@RequestParam List<Integer> ids) {
    log.info("删除员工信息，ids为：{}", ids);
    empService.delete(ids);
    return Result.success();
  }

  /** 根据id查询信息 */
  @GetMapping("/{id}")
  public Result findById(@PathVariable Integer id) {
    log.info("根据id查询信息，id为：{}", id);
    Emp emp = empService.findById(id);
    return Result.success(emp);
  }

  /** 更新员工信息 */
  @LogOperation

  @PutMapping
  public Result update(@RequestBody Emp emp) {
    log.info("修改员工信息：{}", emp);
    empService.update(emp);
    return Result.success();
  }
}
